package ArrayTest;
/*
引用数组多态的运用
 */
public class ArrayTest5 {
    public static void main(String[] args){
        //创建Animal数组
        Animal[] animals = {new Cat(),new Bird()};
        for(int i = 0; i < animals.length; i++){
            //取出动物对象,调用父类的方法，可以用以下方式调用
            animals[i].move();
            //调用子类特有的方法，需要向下转型;
            if(animals[i] instanceof Cat){
                Cat c = (Cat)animals[i];
                c.catchMouse();
            }else if(animals[i] instanceof Bird){
                Bird b = (Bird)animals[i];
                b.sing();
            }
        }
    }
}
class Animal{
    public void move(){
    }
}
class Cat extends Animal{
    public void move(){
        System.out.println("猫在走猫步!");
    }
    //子类特有的方法
    public void catchMouse(){
        System.out.println("猫在抓老鼠!");
    }
}
class Bird extends Animal{
    public void move(){
        System.out.println("鸟儿在飞翔!");
    }
    //子类特有的方法
    public void sing(){
        System.out.println("鸟儿在唱歌！");
    }

}
